package roborally.script;

import roborally.model.Robot;

import be.kuleuven.cs.som.annotate.*;
import be.kuleuven.cs.som.taglet.*;

/**
 * @author Joren VERSPEURT
 * @author Mathieu REYMOND
 * @version 3.0
 * 
 * The superclass for all script statements possible in RoboRally. This includes commands and conditions.
 */
public abstract class Statement {
	
	/**
	 * Create a new Statement with a given Robot.
	 * @param robot The Robot to which this Statement will apply.
	 */
	protected Statement(Robot robot){
		this.robot = robot;
	}
	
	/**
	 * Return the Robot this Statement applies to.
	 */
	@Basic @Immutable
	public Robot getRobot(){
		return robot;
	}
	
	/**
	 * The Robot this Statement applies to.
	 */
	protected final Robot robot;

}
